#pragma once
#include "server.h"
#include <stdbool.h>

#define BWL_NR_LAYERS (4)

class Output
{
    Output(Server* server);
    ~Output();

private:
    struct wl_list m_link; /* server.outputs */
    struct wlr_output *m_wlr_output;
    struct wlr_scene_output *m_scene_output;
    struct wlr_scene_tree *m_layer_tree[BWL_NR_LAYERS];
    struct wlr_scene_tree *m_layer_popup_tree;
    struct wlr_scene_tree *m_osd_tree;
    struct wlr_scene_tree *m_session_lock_tree;
    struct wlr_scene_buffer *m_workspace_osd;
    // struct wlr_box m_usable_area;

    struct wl_list m_regions;  /* struct region.link */

    struct lab_data_buffer *m_osd_buffer;

    struct wl_listener m_destroy;
    struct wl_listener m_frame;
    struct wl_listener m_request_state;

    bool leased;
    bool gamma_lut_changed;

    Server *m_server;
};
